package org.bcos.contract.source;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
import org.bcos.channel.client.TransactionSucCallback;
import org.bcos.web3j.abi.EventEncoder;
import org.bcos.web3j.abi.EventValues;
import org.bcos.web3j.abi.TypeReference;
import org.bcos.web3j.abi.datatypes.Address;
import org.bcos.web3j.abi.datatypes.Event;
import org.bcos.web3j.abi.datatypes.Function;
import org.bcos.web3j.abi.datatypes.Type;
import org.bcos.web3j.abi.datatypes.Utf8String;
import org.bcos.web3j.abi.datatypes.generated.Uint256;
import org.bcos.web3j.crypto.Credentials;
import org.bcos.web3j.crypto.EncryptType;
import org.bcos.web3j.protocol.Web3j;
import org.bcos.web3j.protocol.core.DefaultBlockParameter;
import org.bcos.web3j.protocol.core.methods.request.EthFilter;
import org.bcos.web3j.protocol.core.methods.response.Log;
import org.bcos.web3j.protocol.core.methods.response.TransactionReceipt;
import org.bcos.web3j.tx.Contract;
import org.bcos.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * Auto generated code.<br>
 * <strong>Do not modify!</strong><br>
 * Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>, or {@link org.bcos.web3j.codegen.SolidityFunctionWrapperGenerator} to update.
 *
 * <p>Generated with web3j version none.
 */
public final class ContractAbiMgr extends Contract {
    private static String BINARY = "6060604052341561000c57fe5b5b613ce08061001c6000396000f300606060405236156100c3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304ea6bb9146100c5578063102660cc146102db57806334c04b0f146103bc5780633ab50a9c146105985780634ec0a42d14610679578063627fd239146106e75780638703a808146107555780638d717ac514610897578063d502db9714610978578063f4def6bc14610a12578063fa52c7cc14610b54578063fd5314cd14610bc2578063ff73b1cb14610be8575bfe5b34156100cd57fe5b61011d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e07565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a8181518152602001915080519060200190808383600083146101b2575b8051825260208311156101b25760208201915060208101905060208303925061018e565b505050905090810190601f1680156101de5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360008314610226575b80518252602083111561022657602082019150602081019050602083039250610202565b505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b5084810382528781815181526020019150805190602001908083836000831461029a575b80518252602083111561029a57602082019150602081019050602083039250610276565b505050905090810190601f1680156102c65780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156102e357fe5b610333600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506112ba565b6040518080602001828103825283818151815260200191508051906020019080838360008314610382575b8051825260208311156103825760208201915060208101905060208303925061035e565b505050905090810190601f1680156103ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c457fe5b6103da60048080359060200190919050506113cf565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a81815181526020019150805190602001908083836000831461046f575b80518252602083111561046f5760208201915060208101905060208303925061044b565b505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b508481038352888181518152602001915080519060200190808383600083146104e3575b8051825260208311156104e3576020820191506020810190506020830392506104bf565b505050905090810190601f16801561050f5780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360008314610557575b80518252602083111561055757602082019150602081019050602083039250610533565b505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156105a057fe5b6105f0600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506119c7565b604051808060200182810382528381815181526020019150805190602001908083836000831461063f575b80518252602083111561063f5760208201915060208101905060208303925061061b565b505050905090810190601f16801561066b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068157fe5b6106d1600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611adc565b6040518082815260200191505060405180910390f35b34156106ef57fe5b61073f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b53565b6040518082815260200191505060405180910390f35b341561075d57fe5b610895600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bca565b005b341561089f57fe5b6108ef600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061252a565b604051808060200182810382528381815181526020019150805190602001908083836000831461093e575b80518252602083111561093e5760208201915060208101905060208303925061091a565b505050905090810190601f16801561096a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561098057fe5b6109d0600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061263f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a1a57fe5b610b52600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506126d6565b005b3415610b5c57fe5b610bac600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f2b565b6040518082815260200191505060405180910390f35b3415610bca57fe5b610bd2612fa2565b6040518082815260200191505060405180910390f35b3415610bf057fe5b610c49600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050612fb0565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a818151815260200191508051906020019080838360008314610cde575b805182526020831115610cde57602082019150602081019050602083039250610cba565b505050905090810190601f168015610d0a5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360008314610d52575b805182526020831115610d5257602082019150602081019050602083039250610d2e565b505050905090810190601f168015610d7e5780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360008314610dc6575b805182526020831115610dc657602082019150602081019050602083039250610da2565b505050905090810190601f168015610df25780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b610e0f6139af565b6000610e196139af565b610e216139af565b600060006000876040518082805190602001908083835b60208310610e5b5780518252602082019150602081019050602083039250610e38565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002016000886040518082805190602001908083835b60208310610ec75780518252602082019150602081019050602083039250610ea4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000896040518082805190602001908083835b60208310610f545780518252602082019150602081019050602083039250610f31565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160008a6040518082805190602001908083835b60208310610fc05780518252602082019150602081019050602083039250610f9d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010160008b6040518082805190602001908083835b6020831061102c5780518252602082019150602081019050602083039250611009565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015460008c6040518082805190602001908083835b602083106110995780518252602082019150602081019050602083039250611076565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050154858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111655780601f1061113a57610100808354040283529160200191611165565b820191906000526020600020905b81548152906001019060200180831161114857829003601f168201915b50505050509550838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112015780601f106111d657610100808354040283529160200191611201565b820191906000526020600020905b8154815290600101906020018083116111e457829003601f168201915b50505050509350828054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561129d5780601f106112725761010080835404028352916020019161129d565b820191906000526020600020905b81548152906001019060200180831161128057829003601f168201915b505050505092509550955095509550955095505b91939550919395565b6112c26139af565b6000826040518082805190602001908083835b602083106112f857805182526020820191506020810190506020830392506112d5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b505050505090505b919050565b6113d76139af565b60006113e16139af565b6113e96139af565b6000600060028054905087101561196857600060028881548110151561140b57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156114755780601f10611453576101008083540402835291820191611475565b820191906000526020600020905b815481529060010190602001808311611461575b50509150509081526020016040518091039020600201600060028981548110151561149c57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156115065780601f106114e4576101008083540402835291820191611506565b820191906000526020600020905b8154815290600101906020018083116114f2575b5050915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060028a81548110151561154e57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156115b85780601f106115965761010080835404028352918201916115b8565b820191906000526020600020905b8154815290600101906020018083116115a4575b50509150509081526020016040518091039020600001600060028b8154811015156115df57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156116495780601f10611627576101008083540402835291820191611649565b820191906000526020600020905b815481529060010190602001808311611635575b50509150509081526020016040518091039020600101600060028c81548110151561167057fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156116da5780601f106116b85761010080835404028352918201916116da565b820191906000526020600020905b8154815290600101906020018083116116c6575b5050915050908152602001604051809103902060040154600060028d81548110151561170257fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561176c5780601f1061174a57610100808354040283529182019161176c565b820191906000526020600020905b815481529060010190602001808311611758575b5050915050908152602001604051809103902060050154858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118185780601f106117ed57610100808354040283529160200191611818565b820191906000526020600020905b8154815290600101906020018083116117fb57829003601f168201915b50505050509550838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118b45780601f10611889576101008083540402835291602001916118b4565b820191906000526020600020905b81548152906001019060200180831161189757829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119505780601f1061192557610100808354040283529160200191611950565b820191906000526020600020905b81548152906001019060200180831161193357829003601f168201915b505050505092509550955095509550955095506119be565b600060006000602060405190810160405280600081525092919082925060206040519081016040528060008152509190602060405190810160405280600081525091908191508090509550955095509550955095505b91939550919395565b6119cf6139af565b6000826040518082805190602001908083835b60208310611a0557805182526020820191506020810190506020830392506119e2565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611acf5780601f10611aa457610100808354040283529160200191611acf565b820191906000526020600020905b815481529060010190602001808311611ab257829003601f168201915b505050505090505b919050565b60006001826040518082805190602001908083835b60208310611b145780518252602082019150602081019050602083039250611af1565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054905090505b919050565b60006000826040518082805190602001908083835b60208310611b8b5780518252602082019150602081019050602083039250611b68565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015490505b919050565b611bd26139c3565b6000866040518082805190602001908083835b60208310611c085780518252602082019150602081019050602083039250611be5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ce05780601f10611cb557610100808354040283529160200191611ce0565b820191906000526020600020905b815481529060010190602001808311611cc357829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d825780601f10611d5757610100808354040283529160200191611d82565b820191906000526020600020905b815481529060010190602001808311611d6557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e245780601f10611df957610100808354040283529160200191611e24565b820191906000526020600020905b815481529060010190602001808311611e0757829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481525050905060008160a00151141515612123577fe72eb69a36def8b6f0b6cf0efa836ae9dc9054021c571184e5a05caf99f80c8286826000015183602001518460400151856060015186608001518760a0015160405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314611f80575b805182526020831115611f8057602082019150602081019050602083039250611f5c565b505050905090810190601f168015611fac5780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360008314611ff4575b805182526020831115611ff457602082019150602081019050602083039250611fd0565b505050905090810190601f1680156120205780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360008314612068575b80518252602083111561206857602082019150602081019050602083039250612044565b505050905090810190601f1680156120945780820380516001836020036101000a031916815260200191505b508581038252898181518152602001915080519060200190808383600083146120dc575b8051825260208311156120dc576020820191506020810190506020830392506120b8565b505050905090810190601f1680156121085780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a1612522565b600280548060010182816121379190613a22565b916000526020600020900160005b889091909150908051906020019061215e929190613a4e565b505060c0604051908101604052808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001438152602001428152506000876040518082805190602001908083835b602083106121da57805182526020820191506020810190506020830392506121b7565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190612229929190613ace565b506020820151816001019080519060200190612246929190613ace565b506040820151816002019080519060200190612263929190613ace565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501559050507ff40b8485fd910f3ff86f3dc19c98ee52081bc9037ef4ac640b4d0584e69bf5338686868686434260405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314612383575b8051825260208311156123835760208201915060208101905060208303925061235f565b505050905090810190601f1680156123af5780820380516001836020036101000a031916815260200191505b5085810384528b8181518152602001915080519060200190808383600083146123f7575b8051825260208311156123f7576020820191506020810190506020830392506123d3565b505050905090810190601f1680156124235780820380516001836020036101000a031916815260200191505b5085810383528a81815181526020019150805190602001908083836000831461246b575b80518252602083111561246b57602082019150602081019050602083039250612447565b505050905090810190601f1680156124975780820380516001836020036101000a031916815260200191505b508581038252898181518152602001915080519060200190808383600083146124df575b8051825260208311156124df576020820191506020810190506020830392506124bb565b505050905090810190601f16801561250b5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050565b6125326139af565b6000826040518082805190602001908083835b602083106125685780518252602082019150602081019050602083039250612545565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126325780601f1061260757610100808354040283529160200191612632565b820191906000526020600020905b81548152906001019060200180831161261557829003601f168201915b505050505090505b919050565b60006000826040518082805190602001908083835b602083106126775780518252602082019150602081019050602083039250612654565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b6126de6139c3565b6000866040518082805190602001908083835b6020831061271457805182526020820191506020810190506020830392506126f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127ec5780601f106127c1576101008083540402835291602001916127ec565b820191906000526020600020905b8154815290600101906020018083116127cf57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561288e5780601f106128635761010080835404028352916020019161288e565b820191906000526020600020905b81548152906001019060200180831161287157829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129305780601f1061290557610100808354040283529160200191612930565b820191906000526020600020905b81548152906001019060200180831161291357829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481525050905060008160a001511415612b57577f45508b9d9d5f4cfa6a3ea2297dac2216da5ce08dc58306ba5e071893b78d73e086868660405180806020018060200180602001848103845287818151815260200191508051906020019080838360008314612a2d575b805182526020831115612a2d57602082019150602081019050602083039250612a09565b505050905090810190601f168015612a595780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360008314612aa1575b805182526020831115612aa157602082019150602081019050602083039250612a7d565b505050905090810190601f168015612acd5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360008314612b15575b805182526020831115612b1557602082019150602081019050602083039250612af1565b505050905090810190601f168015612b415780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1612f23565b612b6186826135ec565b60c0604051908101604052808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001438152602001428152506000876040518082805190602001908083835b60208310612bdb5780518252602082019150602081019050602083039250612bb8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190612c2a929190613ace565b506020820151816001019080519060200190612c47929190613ace565b506040820151816002019080519060200190612c64929190613ace565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501559050507f9dc9b7cbeed9b750e0cce85d0ac01080309053b03d37598454c60e2dc7db63e58686868686434260405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314612d84575b805182526020831115612d8457602082019150602081019050602083039250612d60565b505050905090810190601f168015612db05780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360008314612df8575b805182526020831115612df857602082019150602081019050602083039250612dd4565b505050905090810190601f168015612e245780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360008314612e6c575b805182526020831115612e6c57602082019150602081019050602083039250612e48565b505050905090810190601f168015612e985780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360008314612ee0575b805182526020831115612ee057602082019150602081019050602083039250612ebc565b505050905090810190601f168015612f0c5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050565b60006000826040518082805190602001908083835b60208310612f635780518252602082019150602081019050602083039250612f40565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206005015490505b919050565b600060028054905090505b90565b612fb86139af565b6000612fc26139af565b612fca6139af565b600060006001886040518082805190602001908083835b602083106130045780518252602082019150602081019050602083039250612fe1565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054905087101561358c576001886040518082805190602001908083835b602083106130785780518252602082019150602081019050602083039250613055565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020878154811015156130b857fe5b906000526020600020906006020160005b506002016001896040518082805190602001908083835b6020831061310357805182526020820191506020810190506020830392506130e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208881548110151561314357fe5b906000526020600020906006020160005b5060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018a6040518082805190602001908083835b602083106131af578051825260208201915060208101905060208303925061318c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020898154811015156131ef57fe5b906000526020600020906006020160005b5060000160018b6040518082805190602001908083835b6020831061323a5780518252602082019150602081019050602083039250613217565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208a81548110151561327a57fe5b906000526020600020906006020160005b5060010160018c6040518082805190602001908083835b602083106132c557805182526020820191506020810190506020830392506132a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208b81548110151561330557fe5b906000526020600020906006020160005b506004015460018d6040518082805190602001908083835b60208310613351578051825260208201915060208101905060208303925061332e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208c81548110151561339157fe5b906000526020600020906006020160005b5060050154858054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561343c5780601f106134115761010080835404028352916020019161343c565b820191906000526020600020905b81548152906001019060200180831161341f57829003601f168201915b50505050509550838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134d85780601f106134ad576101008083540402835291602001916134d8565b820191906000526020600020905b8154815290600101906020018083116134bb57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156135745780601f1061354957610100808354040283529160200191613574565b820191906000526020600020905b81548152906001019060200180831161355757829003601f168201915b505050505092509550955095509550955095506135e2565b600060006000602060405190810160405280600081525092919082925060206040519081016040528060008152509190602060405190810160405280600081525091908191508090509550955095509550955095505b9295509295509295565b6001826040518082805190602001908083835b6020831061362257805182526020820191506020810190506020830392506135ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902080548060010182816136679190613b4e565b916000526020600020906006020160005b839091909150600082015181600001908051906020019061369a929190613ace565b5060208201518160010190805190602001906136b7929190613ace565b5060408201518160020190805190602001906136d4929190613ace565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501555050507fedc06fa8075874097ef0d866d6fd7ae7f9bf5254aaeea941245aac0bcdb88fa882826000015183602001518460400151856060015186608001518760a0015160405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c81815181526020019150805190602001908083836000831461380c575b80518252602083111561380c576020820191506020810190506020830392506137e8565b505050905090810190601f1680156138385780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360008314613880575b8051825260208311156138805760208201915060208101905060208303925061385c565b505050905090810190601f1680156138ac5780820380516001836020036101000a031916815260200191505b5085810383528a8181518152602001915080519060200190808383600083146138f4575b8051825260208311156138f4576020820191506020810190506020830392506138d0565b505050905090810190601f1680156139205780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360008314613968575b80518252602083111561396857602082019150602081019050602083039250613944565b505050905090810190601f1680156139945780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b5050565b602060405190810160405280600081525090565b60c0604051908101604052806139d7613b80565b81526020016139e4613b80565b81526020016139f1613b80565b8152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b815481835581811511613a4957818360005260206000209182019101613a489190613b94565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a8f57805160ff1916838001178555613abd565b82800160010185558215613abd579182015b82811115613abc578251825591602001919060010190613aa1565b5b509050613aca9190613bc0565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b0f57805160ff1916838001178555613b3d565b82800160010185558215613b3d579182015b82811115613b3c578251825591602001919060010190613b21565b5b509050613b4a9190613bc0565b5090565b815481835581811511613b7b57600602816006028360005260206000209182019101613b7a9190613be5565b5b505050565b602060405190810160405280600081525090565b613bbd91905b80821115613bb95760008181613bb09190613c6c565b50600101613b9a565b5090565b90565b613be291905b80821115613bde576000816000905550600101613bc6565b5090565b90565b613c6991905b80821115613c65576000600082016000613c059190613c6c565b600182016000613c159190613c6c565b600282016000613c259190613c6c565b6003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055600582016000905550600601613beb565b5090565b90565b50805460018160011615610100020316600290046000825580601f10613c925750613cb1565b601f016020900490600052602060002090810190613cb09190613bc0565b5b505600a165627a7a723058203974a2c7beefdcdb7aa859ffe9e4006068739e72ec941592ee4267bbda9ffc630029";

    public static final String ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getAll\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getContractName\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getAllByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getHistoryAbiC\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"},{\"name\":\"contractname\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"abi\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"addAbi\",\"outputs\":[],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getAbi\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getAddr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"},{\"name\":\"contractname\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"abi\",\"type\":\"string\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateAbi\",\"outputs\":[],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"}],\"name\":\"getTimeStamp\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAbiCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"cns_name\",\"type\":\"string\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getHistoryAllByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"cns_name\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"contractname\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"version\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"abi\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"blocknumber\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"AddAbi\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"cns_name\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"contractname\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"version\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"abi\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"blocknumber\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"UpdateAbi\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"cns_name\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"contractname\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"version\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"abi\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"blocknumber\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"AddOldAbi\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"cns_name\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"contractname\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"version\",\"type\":\"string\"}],\"name\":\"AbiNotExist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"cns_name\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"contractname\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"version\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"abi\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"bn\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"t\",\"type\":\"uint256\"}],\"name\":\"AbiExist\",\"type\":\"event\"}]";

    private static String GUOMI_BINARY = "6060604052341561000c57fe5b5b613ce08061001c6000396000f300606060405236156100c3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301c955a4146100c557806343babf0b1461015f5780637a3089d1146102a15780637b6d3ca91461038257806388127fb5146104c45780638ab47274146106a0578063963a15eb1461078157806397ba36fd146107a7578063b57f62f514610815578063d2a09e7814610883578063df5c8df5146108f1578063edbdbd92146109d2578063f5ac294414610be8575bfe5b34156100cd57fe5b61011d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561016757fe5b61029f600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e9e565b005b34156102a957fe5b6102f9600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117fe565b6040518080602001828103825283818151815260200191508051906020019080838360008314610348575b80518252602083111561034857602082019150602081019050602083039250610324565b505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561038a57fe5b6104c2600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611913565b005b34156104cc57fe5b6104e26004808035906020019091905050612168565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a818151815260200191508051906020019080838360008314610577575b80518252602083111561057757602082019150602081019050602083039250610553565b505050905090810190601f1680156105a35780820380516001836020036101000a031916815260200191505b508481038352888181518152602001915080519060200190808383600083146105eb575b8051825260208311156105eb576020820191506020810190506020830392506105c7565b505050905090810190601f1680156106175780820380516001836020036101000a031916815260200191505b5084810382528781815181526020019150805190602001908083836000831461065f575b80518252602083111561065f5760208201915060208101905060208303925061063b565b505050905090810190601f16801561068b5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156106a857fe5b6106f8600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612760565b6040518080602001828103825283818151815260200191508051906020019080838360008314610747575b80518252602083111561074757602082019150602081019050602083039250610723565b505050905090810190601f1680156107735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561078957fe5b610791612875565b6040518082815260200191505060405180910390f35b34156107af57fe5b6107ff600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612883565b6040518082815260200191505060405180910390f35b341561081d57fe5b61086d600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506128fa565b6040518082815260200191505060405180910390f35b341561088b57fe5b6108db600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612971565b6040518082815260200191505060405180910390f35b34156108f957fe5b610949600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506129e8565b6040518080602001828103825283818151815260200191508051906020019080838360008314610998575b80518252602083111561099857602082019150602081019050602083039250610974565b505050905090810190601f1680156109c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109da57fe5b610a2a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612afd565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a818151815260200191508051906020019080838360008314610abf575b805182526020831115610abf57602082019150602081019050602083039250610a9b565b505050905090810190601f168015610aeb5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360008314610b33575b805182526020831115610b3357602082019150602081019050602083039250610b0f565b505050905090810190601f168015610b5f5780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360008314610ba7575b805182526020831115610ba757602082019150602081019050602083039250610b83565b505050905090810190601f168015610bd35780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610bf057fe5b610c49600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050612fb0565b60405180806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184810384528a818151815260200191508051906020019080838360008314610cde575b805182526020831115610cde57602082019150602081019050602083039250610cba565b505050905090810190601f168015610d0a5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360008314610d52575b805182526020831115610d5257602082019150602081019050602083039250610d2e565b505050905090810190601f168015610d7e5780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360008314610dc6575b805182526020831115610dc657602082019150602081019050602083039250610da2565b505050905090810190601f168015610df25780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b60006000826040518082805190602001908083835b60208310610e3f5780518252602082019150602081019050602083039250610e1c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b610ea66139af565b6000866040518082805190602001908083835b60208310610edc5780518252602082019150602081019050602083039250610eb9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110565780601f1061102b57610100808354040283529160200191611056565b820191906000526020600020905b81548152906001019060200180831161103957829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110f85780601f106110cd576101008083540402835291602001916110f8565b820191906000526020600020905b8154815290600101906020018083116110db57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481525050905060008160a001511415156113f7577f4b9fe562e9918b5d5e31a06f55a146f33cd299fe822b2e12bada0f20c1e0eb0786826000015183602001518460400151856060015186608001518760a0015160405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314611254575b80518252602083111561125457602082019150602081019050602083039250611230565b505050905090810190601f1680156112805780820380516001836020036101000a031916815260200191505b5085810384528b8181518152602001915080519060200190808383600083146112c8575b8051825260208311156112c8576020820191506020810190506020830392506112a4565b505050905090810190601f1680156112f45780820380516001836020036101000a031916815260200191505b5085810383528a81815181526020019150805190602001908083836000831461133c575b80518252602083111561133c57602082019150602081019050602083039250611318565b505050905090810190601f1680156113685780820380516001836020036101000a031916815260200191505b508581038252898181518152602001915080519060200190808383600083146113b0575b8051825260208311156113b05760208201915060208101905060208303925061138c565b505050905090810190601f1680156113dc5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a16117f6565b6002805480600101828161140b9190613a0e565b916000526020600020900160005b8890919091509080519060200190611432929190613a3a565b505060c0604051908101604052808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001438152602001428152506000876040518082805190602001908083835b602083106114ae578051825260208201915060208101905060208303925061148b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000190805190602001906114fd929190613aba565b50602082015181600101908051906020019061151a929190613aba565b506040820151816002019080519060200190611537929190613aba565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501559050507f26f69ea8a5150c1c2d26ade9d21b3d30f868a00d9d1cc9d6ff2dfa2ec826bf368686868686434260405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314611657575b80518252602083111561165757602082019150602081019050602083039250611633565b505050905090810190601f1680156116835780820380516001836020036101000a031916815260200191505b5085810384528b8181518152602001915080519060200190808383600083146116cb575b8051825260208311156116cb576020820191506020810190506020830392506116a7565b505050905090810190601f1680156116f75780820380516001836020036101000a031916815260200191505b5085810383528a81815181526020019150805190602001908083836000831461173f575b80518252602083111561173f5760208201915060208101905060208303925061171b565b505050905090810190601f16801561176b5780820380516001836020036101000a031916815260200191505b508581038252898181518152602001915080519060200190808383600083146117b3575b8051825260208311156117b35760208201915060208101905060208303925061178f565b505050905090810190601f1680156117df5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050565b611806613b3a565b6000826040518082805190602001908083835b6020831061183c5780518252602082019150602081019050602083039250611819565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119065780601f106118db57610100808354040283529160200191611906565b820191906000526020600020905b8154815290600101906020018083116118e957829003601f168201915b505050505090505b919050565b61191b6139af565b6000866040518082805190602001908083835b60208310611951578051825260208201915060208101905060208303925061192e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a295780601f106119fe57610100808354040283529160200191611a29565b820191906000526020600020905b815481529060010190602001808311611a0c57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611acb5780601f10611aa057610100808354040283529160200191611acb565b820191906000526020600020905b815481529060010190602001808311611aae57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b6d5780601f10611b4257610100808354040283529160200191611b6d565b820191906000526020600020905b815481529060010190602001808311611b5057829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481525050905060008160a001511415611d94577fb2effd8fb70bbf79b5728abdf940bfabd43abc74e5663e7f1d0698310005092386868660405180806020018060200180602001848103845287818151815260200191508051906020019080838360008314611c6a575b805182526020831115611c6a57602082019150602081019050602083039250611c46565b505050905090810190601f168015611c965780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360008314611cde575b805182526020831115611cde57602082019150602081019050602083039250611cba565b505050905090810190601f168015611d0a5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360008314611d52575b805182526020831115611d5257602082019150602081019050602083039250611d2e565b505050905090810190601f168015611d7e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1612160565b611d9e86826135ec565b60c0604051908101604052808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001438152602001428152506000876040518082805190602001908083835b60208310611e185780518252602082019150602081019050602083039250611df5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190611e67929190613aba565b506020820151816001019080519060200190611e84929190613aba565b506040820151816002019080519060200190611ea1929190613aba565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501559050507f437801b4e2312c2908973f6de08f1975591d2767221aa5e64994bbda21a144ee8686868686434260405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c818151815260200191508051906020019080838360008314611fc1575b805182526020831115611fc157602082019150602081019050602083039250611f9d565b505050905090810190601f168015611fed5780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360008314612035575b80518252602083111561203557602082019150602081019050602083039250612011565b505050905090810190601f1680156120615780820380516001836020036101000a031916815260200191505b5085810383528a8181518152602001915080519060200190808383600083146120a9575b8051825260208311156120a957602082019150602081019050602083039250612085565b505050905090810190601f1680156120d55780820380516001836020036101000a031916815260200191505b5085810382528981815181526020019150805190602001908083836000831461211d575b80518252602083111561211d576020820191506020810190506020830392506120f9565b505050905090810190601f1680156121495780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050565b612170613b3a565b600061217a613b3a565b612182613b3a565b600060006002805490508710156127015760006002888154811015156121a457fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561220e5780601f106121ec57610100808354040283529182019161220e565b820191906000526020600020905b8154815290600101906020018083116121fa575b50509150509081526020016040518091039020600201600060028981548110151561223557fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561229f5780601f1061227d57610100808354040283529182019161229f565b820191906000526020600020905b81548152906001019060200180831161228b575b5050915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060028a8154811015156122e757fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156123515780601f1061232f576101008083540402835291820191612351565b820191906000526020600020905b81548152906001019060200180831161233d575b50509150509081526020016040518091039020600001600060028b81548110151561237857fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156123e25780601f106123c05761010080835404028352918201916123e2565b820191906000526020600020905b8154815290600101906020018083116123ce575b50509150509081526020016040518091039020600101600060028c81548110151561240957fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156124735780601f10612451576101008083540402835291820191612473565b820191906000526020600020905b81548152906001019060200180831161245f575b5050915050908152602001604051809103902060040154600060028d81548110151561249b57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156125055780601f106124e3576101008083540402835291820191612505565b820191906000526020600020905b8154815290600101906020018083116124f1575b5050915050908152602001604051809103902060050154858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125b15780601f10612586576101008083540402835291602001916125b1565b820191906000526020600020905b81548152906001019060200180831161259457829003601f168201915b50505050509550838054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561264d5780601f106126225761010080835404028352916020019161264d565b820191906000526020600020905b81548152906001019060200180831161263057829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126e95780601f106126be576101008083540402835291602001916126e9565b820191906000526020600020905b8154815290600101906020018083116126cc57829003601f168201915b50505050509250955095509550955095509550612757565b600060006000602060405190810160405280600081525092919082925060206040519081016040528060008152509190602060405190810160405280600081525091908191508090509550955095509550955095505b91939550919395565b612768613b3a565b6000826040518082805190602001908083835b6020831061279e578051825260208201915060208101905060208303925061277b565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128685780601f1061283d57610100808354040283529160200191612868565b820191906000526020600020905b81548152906001019060200180831161284b57829003601f168201915b505050505090505b919050565b600060028054905090505b90565b60006000826040518082805190602001908083835b602083106128bb5780518252602082019150602081019050602083039250612898565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206005015490505b919050565b60006001826040518082805190602001908083835b60208310612932578051825260208201915060208101905060208303925061290f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054905090505b919050565b60006000826040518082805190602001908083835b602083106129a95780518252602082019150602081019050602083039250612986565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015490505b919050565b6129f0613b3a565b6000826040518082805190602001908083835b60208310612a265780518252602082019150602081019050602083039250612a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612af05780601f10612ac557610100808354040283529160200191612af0565b820191906000526020600020905b815481529060010190602001808311612ad357829003601f168201915b505050505090505b919050565b612b05613b3a565b6000612b0f613b3a565b612b17613b3a565b600060006000876040518082805190602001908083835b60208310612b515780518252602082019150602081019050602083039250612b2e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002016000886040518082805190602001908083835b60208310612bbd5780518252602082019150602081019050602083039250612b9a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000896040518082805190602001908083835b60208310612c4a5780518252602082019150602081019050602083039250612c27565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160008a6040518082805190602001908083835b60208310612cb65780518252602082019150602081019050602083039250612c93565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010160008b6040518082805190602001908083835b60208310612d225780518252602082019150602081019050602083039250612cff565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015460008c6040518082805190602001908083835b60208310612d8f5780518252602082019150602081019050602083039250612d6c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050154858054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e5b5780601f10612e3057610100808354040283529160200191612e5b565b820191906000526020600020905b815481529060010190602001808311612e3e57829003601f168201915b50505050509550838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ef75780601f10612ecc57610100808354040283529160200191612ef7565b820191906000526020600020905b815481529060010190602001808311612eda57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f935780601f10612f6857610100808354040283529160200191612f93565b820191906000526020600020905b815481529060010190602001808311612f7657829003601f168201915b505050505092509550955095509550955095505b91939550919395565b612fb8613b3a565b6000612fc2613b3a565b612fca613b3a565b600060006001886040518082805190602001908083835b602083106130045780518252602082019150602081019050602083039250612fe1565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054905087101561358c576001886040518082805190602001908083835b602083106130785780518252602082019150602081019050602083039250613055565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020878154811015156130b857fe5b906000526020600020906006020160005b506002016001896040518082805190602001908083835b6020831061310357805182526020820191506020810190506020830392506130e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208881548110151561314357fe5b906000526020600020906006020160005b5060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018a6040518082805190602001908083835b602083106131af578051825260208201915060208101905060208303925061318c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020898154811015156131ef57fe5b906000526020600020906006020160005b5060000160018b6040518082805190602001908083835b6020831061323a5780518252602082019150602081019050602083039250613217565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208a81548110151561327a57fe5b906000526020600020906006020160005b5060010160018c6040518082805190602001908083835b602083106132c557805182526020820191506020810190506020830392506132a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208b81548110151561330557fe5b906000526020600020906006020160005b506004015460018d6040518082805190602001908083835b60208310613351578051825260208201915060208101905060208303925061332e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208c81548110151561339157fe5b906000526020600020906006020160005b5060050154858054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561343c5780601f106134115761010080835404028352916020019161343c565b820191906000526020600020905b81548152906001019060200180831161341f57829003601f168201915b50505050509550838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134d85780601f106134ad576101008083540402835291602001916134d8565b820191906000526020600020905b8154815290600101906020018083116134bb57829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156135745780601f1061354957610100808354040283529160200191613574565b820191906000526020600020905b81548152906001019060200180831161355757829003601f168201915b505050505092509550955095509550955095506135e2565b600060006000602060405190810160405280600081525092919082925060206040519081016040528060008152509190602060405190810160405280600081525091908191508090509550955095509550955095505b9295509295509295565b6001826040518082805190602001908083835b6020831061362257805182526020820191506020810190506020830392506135ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902080548060010182816136679190613b4e565b916000526020600020906006020160005b839091909150600082015181600001908051906020019061369a929190613aba565b5060208201518160010190805190602001906136b7929190613aba565b5060408201518160020190805190602001906136d4929190613aba565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a082015181600501555050507fef357d88a93cd3148319d7c67a61ad57ef411285833633b8bc9a3be5a4e93e4982826000015183602001518460400151856060015186608001518760a0015160405180806020018060200180602001806020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186815260200185810385528c81815181526020019150805190602001908083836000831461380c575b80518252602083111561380c576020820191506020810190506020830392506137e8565b505050905090810190601f1680156138385780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360008314613880575b8051825260208311156138805760208201915060208101905060208303925061385c565b505050905090810190601f1680156138ac5780820380516001836020036101000a031916815260200191505b5085810383528a8181518152602001915080519060200190808383600083146138f4575b8051825260208311156138f4576020820191506020810190506020830392506138d0565b505050905090810190601f1680156139205780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360008314613968575b80518252602083111561396857602082019150602081019050602083039250613944565b505050905090810190601f1680156139945780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b5050565b60c0604051908101604052806139c3613b80565b81526020016139d0613b80565b81526020016139dd613b80565b8152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b815481835581811511613a3557818360005260206000209182019101613a349190613b94565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a7b57805160ff1916838001178555613aa9565b82800160010185558215613aa9579182015b82811115613aa8578251825591602001919060010190613a8d565b5b509050613ab69190613bc0565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613afb57805160ff1916838001178555613b29565b82800160010185558215613b29579182015b82811115613b28578251825591602001919060010190613b0d565b5b509050613b369190613bc0565b5090565b602060405190810160405280600081525090565b815481835581811511613b7b57600602816006028360005260206000209182019101613b7a9190613be5565b5b505050565b602060405190810160405280600081525090565b613bbd91905b80821115613bb95760008181613bb09190613c6c565b50600101613b9a565b5090565b90565b613be291905b80821115613bde576000816000905550600101613bc6565b5090565b90565b613c6991905b80821115613c65576000600082016000613c059190613c6c565b600182016000613c159190613c6c565b600282016000613c259190613c6c565b6003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055600582016000905550600601613beb565b5090565b90565b50805460018160011615610100020316600290046000825580601f10613c925750613cb1565b601f016020900490600052602060002090810190613cb09190613bc0565b5b505600a165627a7a72305820cdcd72ada4a459e75926a2d3a10d2d8d1c2ebaf58107b53f2a6147bb78d5415a0029";

    private ContractAbiMgr(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, Boolean isInitByName) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit, isInitByName);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ContractAbiMgr(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, Boolean isInitByName) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit, isInitByName);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ContractAbiMgr(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit, false);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ContractAbiMgr(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit, false);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    public static List<AddAbiEventResponse> getAddAbiEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("AddAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<AddAbiEventResponse> responses = new ArrayList<AddAbiEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            AddAbiEventResponse typedResponse = new AddAbiEventResponse();
            typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
            typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
            typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
            typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
            typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
            typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
            typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<AddAbiEventResponse> addAbiEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("AddAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, AddAbiEventResponse>() {
            @Override
            public AddAbiEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                AddAbiEventResponse typedResponse = new AddAbiEventResponse();
                typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
                typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
                typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
                typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
                typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
                typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
                typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
                return typedResponse;
            }
        });
    }

    public static List<UpdateAbiEventResponse> getUpdateAbiEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("UpdateAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<UpdateAbiEventResponse> responses = new ArrayList<UpdateAbiEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            UpdateAbiEventResponse typedResponse = new UpdateAbiEventResponse();
            typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
            typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
            typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
            typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
            typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
            typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
            typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<UpdateAbiEventResponse> updateAbiEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("UpdateAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, UpdateAbiEventResponse>() {
            @Override
            public UpdateAbiEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                UpdateAbiEventResponse typedResponse = new UpdateAbiEventResponse();
                typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
                typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
                typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
                typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
                typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
                typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
                typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
                return typedResponse;
            }
        });
    }

    public static List<AddOldAbiEventResponse> getAddOldAbiEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("AddOldAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<AddOldAbiEventResponse> responses = new ArrayList<AddOldAbiEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            AddOldAbiEventResponse typedResponse = new AddOldAbiEventResponse();
            typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
            typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
            typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
            typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
            typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
            typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
            typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<AddOldAbiEventResponse> addOldAbiEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("AddOldAbi", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, AddOldAbiEventResponse>() {
            @Override
            public AddOldAbiEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                AddOldAbiEventResponse typedResponse = new AddOldAbiEventResponse();
                typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
                typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
                typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
                typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
                typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
                typedResponse.blocknumber = (Uint256) eventValues.getNonIndexedValues().get(5);
                typedResponse.timestamp = (Uint256) eventValues.getNonIndexedValues().get(6);
                return typedResponse;
            }
        });
    }

    public static List<AbiNotExistEventResponse> getAbiNotExistEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("AbiNotExist", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<AbiNotExistEventResponse> responses = new ArrayList<AbiNotExistEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            AbiNotExistEventResponse typedResponse = new AbiNotExistEventResponse();
            typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
            typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
            typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<AbiNotExistEventResponse> abiNotExistEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("AbiNotExist", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, AbiNotExistEventResponse>() {
            @Override
            public AbiNotExistEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                AbiNotExistEventResponse typedResponse = new AbiNotExistEventResponse();
                typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
                typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
                typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
                return typedResponse;
            }
        });
    }

    public static List<AbiExistEventResponse> getAbiExistEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("AbiExist", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<AbiExistEventResponse> responses = new ArrayList<AbiExistEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            AbiExistEventResponse typedResponse = new AbiExistEventResponse();
            typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
            typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
            typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
            typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
            typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
            typedResponse.bn = (Uint256) eventValues.getNonIndexedValues().get(5);
            typedResponse.t = (Uint256) eventValues.getNonIndexedValues().get(6);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<AbiExistEventResponse> abiExistEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("AbiExist", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, AbiExistEventResponse>() {
            @Override
            public AbiExistEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                AbiExistEventResponse typedResponse = new AbiExistEventResponse();
                typedResponse.cns_name = (Utf8String) eventValues.getNonIndexedValues().get(0);
                typedResponse.contractname = (Utf8String) eventValues.getNonIndexedValues().get(1);
                typedResponse.version = (Utf8String) eventValues.getNonIndexedValues().get(2);
                typedResponse.abi = (Utf8String) eventValues.getNonIndexedValues().get(3);
                typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(4);
                typedResponse.bn = (Uint256) eventValues.getNonIndexedValues().get(5);
                typedResponse.t = (Uint256) eventValues.getNonIndexedValues().get(6);
                return typedResponse;
            }
        });
    }

    public Future<List<Type>> getAll(Utf8String cns_name) {
        Function function = new Function("getAll", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return executeCallMultipleValueReturnAsync(function);
    }

    public Future<Utf8String> getContractName(Utf8String cns_name) {
        Function function = new Function("getContractName", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<List<Type>> getAllByIndex(Uint256 index) {
        Function function = new Function("getAllByIndex", 
                Arrays.<Type>asList(index), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return executeCallMultipleValueReturnAsync(function);
    }

    public Future<Utf8String> getVersion(Utf8String cns_name) {
        Function function = new Function("getVersion", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> getHistoryAbiC(Utf8String cns_name) {
        Function function = new Function("getHistoryAbiC", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> getBlockNumber(Utf8String cns_name) {
        Function function = new Function("getBlockNumber", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> addAbi(Utf8String cns_name, Utf8String contractname, Utf8String version, Utf8String abi, Address addr) {
        Function function = new Function("addAbi", Arrays.<Type>asList(cns_name, contractname, version, abi, addr), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void addAbi(Utf8String cns_name, Utf8String contractname, Utf8String version, Utf8String abi, Address addr, TransactionSucCallback callback) {
        Function function = new Function("addAbi", Arrays.<Type>asList(cns_name, contractname, version, abi, addr), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<Utf8String> getAbi(Utf8String cns_name) {
        Function function = new Function("getAbi", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Address> getAddr(Utf8String cns_name) {
        Function function = new Function("getAddr", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> updateAbi(Utf8String cns_name, Utf8String contractname, Utf8String version, Utf8String abi, Address addr) {
        Function function = new Function("updateAbi", Arrays.<Type>asList(cns_name, contractname, version, abi, addr), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void updateAbi(Utf8String cns_name, Utf8String contractname, Utf8String version, Utf8String abi, Address addr, TransactionSucCallback callback) {
        Function function = new Function("updateAbi", Arrays.<Type>asList(cns_name, contractname, version, abi, addr), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<Uint256> getTimeStamp(Utf8String cns_name) {
        Function function = new Function("getTimeStamp", 
                Arrays.<Type>asList(cns_name), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> getAbiCount() {
        Function function = new Function("getAbiCount", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<List<Type>> getHistoryAllByIndex(Utf8String cns_name, Uint256 index) {
        Function function = new Function("getHistoryAllByIndex", 
                Arrays.<Type>asList(cns_name, index), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return executeCallMultipleValueReturnAsync(function);
    }

    public static Future<ContractAbiMgr> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue) {
        if(EncryptType.encryptType == 1) setBinary(getGuomiBinary());
        return deployAsync(ContractAbiMgr.class, web3j, credentials, gasPrice, gasLimit, BINARY, "", initialWeiValue);
    }

    public static Future<ContractAbiMgr> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue) {
        if(EncryptType.encryptType == 1) setBinary(getGuomiBinary());
        return deployAsync(ContractAbiMgr.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "", initialWeiValue);
    }

    public static ContractAbiMgr load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new ContractAbiMgr(contractAddress, web3j, credentials, gasPrice, gasLimit, false);
    }

    public static ContractAbiMgr load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new ContractAbiMgr(contractAddress, web3j, transactionManager, gasPrice, gasLimit, false);
    }

    public static ContractAbiMgr loadByName(String contractName, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new ContractAbiMgr(contractName, web3j, credentials, gasPrice, gasLimit, true);
    }

    public static ContractAbiMgr loadByName(String contractName, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new ContractAbiMgr(contractName, web3j, transactionManager, gasPrice, gasLimit, true);
    }

    public static void setBinary(String binary) {
        BINARY = binary;
    }

    public static String getGuomiBinary() {
        return GUOMI_BINARY;
    }

    public static class AddAbiEventResponse {
        public Utf8String cns_name;

        public Utf8String contractname;

        public Utf8String version;

        public Utf8String abi;

        public Address addr;

        public Uint256 blocknumber;

        public Uint256 timestamp;
    }

    public static class UpdateAbiEventResponse {
        public Utf8String cns_name;

        public Utf8String contractname;

        public Utf8String version;

        public Utf8String abi;

        public Address addr;

        public Uint256 blocknumber;

        public Uint256 timestamp;
    }

    public static class AddOldAbiEventResponse {
        public Utf8String cns_name;

        public Utf8String contractname;

        public Utf8String version;

        public Utf8String abi;

        public Address addr;

        public Uint256 blocknumber;

        public Uint256 timestamp;
    }

    public static class AbiNotExistEventResponse {
        public Utf8String cns_name;

        public Utf8String contractname;

        public Utf8String version;
    }

    public static class AbiExistEventResponse {
        public Utf8String cns_name;

        public Utf8String contractname;

        public Utf8String version;

        public Utf8String abi;

        public Address addr;

        public Uint256 bn;

        public Uint256 t;
    }
}
